package com.hr.utils;

import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;

@Component
public class Base64Secret {


    //生成一个安全的 Base64 编码密钥（只运行一次）
    public static void generateKey(){
        byte[] bytes = new byte[32];//密钥字节数组长度
        new SecureRandom().nextBytes(bytes);//生成密钥
        String encodedKey  = Base64.getEncoder().encodeToString(bytes);//将密钥转为字符串
        System.out.println("Base64 密钥: " + encodedKey);
    }

    //解析Base64 密钥，并生成一个密钥对象
    public static SecretKeySpec getSigningKeyFromBase64(String base64Key){
        //解码密钥字符串
        byte[] decodedKey = Base64.getDecoder().decode(base64Key);
        //生成密钥对象
        //解释：HmacSHA256 是一种基于哈希的消息认证码（HMAC）算法，用于生成一个密钥对象
        // 参数1：密钥字节数组
        // 参数2：密钥算法名称
        return new SecretKeySpec(decodedKey, "HmacSHA256");

    }


}
